package com.fndsoft.police.xuancheng.ui.base;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;

import com.fndsoft.police.xuancheng.R;
import com.fndsoft.police.xuancheng.util.ViewUtil;
import com.fndsoft.police.xuancheng.view.TitleBar;
import com.fndsoft.police.xuancheng.view.TitleBar.TitleSyle;
import com.lidroid.xutils.view.annotation.ViewInject;

/**
 * @author carlos carlosk@163.com
 * @version 创建时间：2013-4-1 上午6:09:25 封装所有的UI
 */

public abstract class BaseUIAc extends BaseAbsAc {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		initBaseData();

		installViews();

		initData();

	}

	@ViewInject(R.id.titleBar)
	public TitleBar mTitleBar;
	private ProgressDialog progressDialog;

	// private LinearLayout mBaseLayout;

	/**
	 * @author carlos carlosk@163.com
	 * @version 创建时间：2013-4-1 上午6:20:21
	 */
	private void initBaseData() {
		// ActionBar.LayoutParams lp = new ActionBar.LayoutParams(
		// ActionBar.LayoutParams.MATCH_PARENT,
		// ActionBar.LayoutParams.MATCH_PARENT, Gravity.CENTER);
		// mTitleBar = new TitleBar(this);
		// mTitleBar.centerTextView.setText(getTitle());
		// ActionBar actionBar = getActionBar();
		// if (null != actionBar) {
		// actionBar.setCustomView(mTitleBar, lp);
		// actionBar.setDisplayShowHomeEnabled(false);
		// actionBar.setDisplayShowTitleEnabled(false);
		// actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
		// }

		// 设置按钮事件
		// if (isCustomBackBtnEvent()) {
		// return;
		// }
	}

	/*
	 * *******************************************
	 * 
	 * 风火轮 开始
	 * 
	 * *********************************************
	 */
	private volatile boolean isLoading;

	public void showProgress() {
		if (isLoading) {
			return;
		}
		hideProgress();
		if (null == progressDialog) {
			progressDialog = ProgressDialog.show(this, "",
					getString(R.string.wait), false);
		} else {
			progressDialog.setMessage(getString(R.string.wait));
		}
		progressDialog.show();
	}

	public void showProgress(String msg) {
		if (null == progressDialog) {
			progressDialog = ProgressDialog.show(this, "", msg, false);
		} else {
			progressDialog.setMessage(msg);
		}
		if (!progressDialog.isShowing()) {
			progressDialog.show();
		}
	}

	/**
	 * 显示错误的单一提示框
	 * 
	 * @author carlos carlosk@163.com
	 * @version 创建时间：2014年3月21日 上午1:45:41
	 */
	public void showAlert(int resId) {
		showAlert(getString(resId));
	}

	public void showAlert(String msg) {
		// TODO 弹出框
	}

	/**
	 * 显示吐司
	 * 
	 * @author carlos carlosk@163.com
	 * @version 创建时间：2014年3月21日 上午1:47:40
	 */
	public void showToast(int resId) {
		ViewUtil.showToast(resId);
	}

	public void showToast(String msg) {
		ViewUtil.showToast(msg, false);
	}

	/**
	 * 隐藏进度条
	 * 
	 * @author carlos carlosk@163.com
	 * @version 创建时间：2013-4-1 上午6:53:35
	 */
	public void hideProgress() {
		if (null != progressDialog) {
			progressDialog.dismiss();
		}
	}

	public void loading() {
		isLoading = true;
	}

	public boolean isLoading() {
		return isLoading;
	}

	/*
	 * *******************************************
	 * 
	 * 风火轮 结束
	 * 
	 * *********************************************
	 */

	public static Activity mFromAc;// 从哪个Ac跳转过来

	/**
	 * 设置标题
	 * 
	 * @author carlos carlosk@163.com
	 * @version 创建时间：2013-4-1 上午6:48:41
	 * @param titleSyle
	 * @param title
	 */
	public void initTitleSyle(TitleSyle titleSyle, String title) {
		if (null == mTitleBar) {
			View view = findViewById(R.id.titleBar);
			if (null != view) {
				mTitleBar = (TitleBar) view;
			} else {
				return;
			}
		}
		mTitleBar.initSyle(titleSyle, title);
		// mTitleBar.setNavSubTitle2(UserData.getUserName());

		// 设置导航栏返回按钮事件
		mTitleBar.setLeftBtnOnclick(new OnClickListener() {

			@Override
			public void onClick(View arg0) {
				BaseUIAc.mFromAc = null;
				finish();
			}
		});
	}

	// @Override
	// /**
	// * 给子类显示
	// */
	// public void setContentView(int id) {
	// ViewUtil.buildView(id, mBaseLayout);
	// }

	/**
	 * 加载布局文件，初始化对应的view对象。
	 */
	protected abstract void installViews();

	/**
	 * Activity中初始化的数据
	 */
	protected abstract void initData();

	private volatile boolean isFingerDown;// 手指是否按下

	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {

		if (keyCode == KeyEvent.KEYCODE_BACK && isCustomBackBtnEvent()) {
			optionBackEvent();
			return true;
		}
		return super.onKeyDown(keyCode, event);
	}

	@Override
	public boolean dispatchTouchEvent(MotionEvent ev) {
		int action = ev.getAction();
		if (action == MotionEvent.ACTION_DOWN) {
			isFingerDown = true;
			// debug("手指按下去了");
		} else if (action == MotionEvent.ACTION_UP) {
			isFingerDown = false;
			// debug("手指起来了");
		}

		return super.dispatchTouchEvent(ev);
	}

	/**
	 * 手指是否按下去
	 * 
	 * @author carlos carlosk@163.com
	 * @version 创建时间：2012-9-19 上午7:55:36
	 * @return
	 */
	public boolean isFingerDown() {
		return isFingerDown;
	}

	/**
	 * 处理返回事件，包括左上角的按钮和返回物理键盘
	 * 
	 * @author carlos carlosk@163.com
	 * @version 创建时间：2013-4-1 上午7:08:37
	 * @return
	 */
	public abstract boolean isCustomBackBtnEvent();

	/**
	 * 处理返回事件
	 * 
	 * @author carlos carlosk@163.com
	 * @version 创建时间：2014年4月12日 上午1:21:46
	 */
	public boolean optionBackEvent() {
		return false;
	}

	/**
	 * 
	 * 
	 * 界面动画
	 * 
	 */
	@Override
	public void startActivity(Intent intent) {
		super.startActivity(intent);
	}

	@Override
	public void finish() {
		super.finish();
	}

}
